package com.znufe.exam.service;

import com.github.pagehelper.PageInfo;
import com.znufe.exam.domain.grade.*;
import com.znufe.exam.viewmodel.admin.grade.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface ExamGradeService {

    List<ExamPaperOfCourseResponseVM> selectExamPaperListByCourseId(Integer courseId);

    List<CourseContentResponseVM> selectCourseInfoByClassId(Integer classId);

    String selectClassNameByClassId(Integer classId);

    CourseContentOfClassResponseVM getCourseContentByClassId(Integer classId);

    List<ClassCourseGradeResponseVM> selectClassCourseGrade(ClassCourseGradeRequestVM requestVM);

    List<ClassExamGradeResponseVM> selectClassExamGrade(ClassExamGradeRequestVM requestVM);

    Integer selectClassIdByClassName(String className);

    String selectCourseNameByCourseId(Integer courseId);

    Integer selectCourseIdByCourseName(String courseName);

    List<StudentIndividualGradeResponseVM> selectStudentIndividualGrade(StudentIndividualGradeRequestVM requestVM);

    String selectExamPaperNameByExamPaperId(Integer examPaperId);

    List<StudentIndividualGradeResponseVM> getStudentIndividualGradeInfo(StudentIndividualGradeRequestVM requestVM);

    StudentExamQuestionAnswerObject selectStuAns(StudentExamDetailRequestObject requestObject);

    List<Integer> selectExamPaperIdByClassId(Integer classId);

    Map<Integer, String> getExamPaperNameMap(List<Integer> examPaperIds);

    PageInfo<ExamInfoOfCourseOfClassResponseObject> selectExamInfoOfCourseOfClass(ExamInfoOfCourseOfClassRequestVM requestVM);

    ExamGradeDistributionResponseVM selectExamGradeDistribution(ExamGradeDistributionRequestVM requestVM);

    List<ExamQuestionScoreSituationObject> selectExamQusScoreSituation(ExamGradeDistributionRequestVM requestVM);

}
